From f1e277969a7f7f45b840823a641fc43566e3ebfa Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Thu, 24 Dec 2015 20:33:36 +0100 Subject: [PATCH] gadget: Add queue_resize/allocate/draw() functions --- gtk/gtkcssgadget.c | 42 +++++++++++++++++++++++++++++---------- gtk/gtkcssgadgetprivate.h | 4 ++++ 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/gtk/gtkcssgadget.c b/gtk/gtkcssgadget.c index dfda403090..9857c463a4 100644 --- a/gtk/gtkcssgadget.c +++ b/gtk/gtkcssgadget.c @@ -122,17 +122,12 @@ static void gtk_css_gadget_real_style_changed (GtkCssGadget *gadget, GtkCssStyleChange *change) { - GtkCssGadgetPrivate *priv = gtk_css_gadget_get_instance_private (gadget); - - if (priv->owner) - { - if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_SIZE)) - gtk_widget_queue_resize (priv->owner); - else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_CLIP)) - gtk_widget_queue_allocate (priv->owner); - else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_REDRAW)) - gtk_widget_queue_draw (priv->owner); - } + if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_SIZE)) + gtk_css_gadget_queue_resize (gadget); + else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_CLIP)) + gtk_css_gadget_queue_allocate (gadget); + else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_REDRAW)) + gtk_css_gadget_queue_draw (gadget); } static void @@ -774,6 +769,31 @@ gtk_css_node_style_changed_for_widget (GtkCssNode *node, _gtk_bitmask_free (changes); } +void +gtk_css_gadget_queue_resize (GtkCssGadget *gadget) +{ + g_return_if_fail (GTK_IS_CSS_GADGET (gadget)); + + gtk_widget_queue_resize (gtk_css_gadget_get_owner (gadget)); +} + +void +gtk_css_gadget_queue_allocate (GtkCssGadget *gadget) +{ + g_return_if_fail (GTK_IS_CSS_GADGET (gadget)); + + gtk_widget_queue_allocate (gtk_css_gadget_get_owner (gadget)); +} + +void +gtk_css_gadget_queue_draw (GtkCssGadget *gadget) +{ + g_return_if_fail (GTK_IS_CSS_GADGET (gadget)); + + /* XXX: Only invalidate clip here */ + gtk_widget_queue_draw (gtk_css_gadget_get_owner (gadget)); +} + void gtk_css_gadget_get_border_allocation (GtkCssGadget *gadget, GtkAllocation *allocation, diff --git a/gtk/gtkcssgadgetprivate.h b/gtk/gtkcssgadgetprivate.h index 40efe8dfad..ec898bd09d 100644 --- a/gtk/gtkcssgadgetprivate.h +++ b/gtk/gtkcssgadgetprivate.h @@ -107,6 +107,10 @@ void gtk_css_gadget_allocate (GtkCssGadget void gtk_css_gadget_draw (GtkCssGadget *gadget, cairo_t *cr); +void gtk_css_gadget_queue_resize (GtkCssGadget *gadget); +void gtk_css_gadget_queue_allocate (GtkCssGadget *gadget); +void gtk_css_gadget_queue_draw (GtkCssGadget *gadget); + void gtk_css_gadget_get_border_allocation (GtkCssGadget *gadget, GtkAllocation *allocation, int *baseline); -- 2.30.2